Go and DevOps

Understand the structure and prerequisites for the course.

We'll cover the following

DevOps is a concept that has been floating around since the early 2000s. It is a popularization of an operations discipline that relies on programming skills with development psychology popularized by Agile. Many of today's DevOps shops used Python heavily in DevOps as C++ was too painful for many SREs. But, as time wore on, many of the groups working in Python started having scaling issues. This included everything from Python running out of memory to the Global Interpreter Lock (GIL) preventing true multithreading. At scale, the lack of static types gave an abundance of errors that should have been caught at compile time.

DevOps lifecycle
DevOps lifecycle

But, Python came with more than compile-time and service-scaling issues. Simply moving to a new version of Python in the fleet might cause a service to stop working. The Python version run on Google machines would often get upgraded and expose bugs in your code that the previous version did not. Unlike a compiled binary, you could not just roll back to an old version.

Now, Go has become the de facto language for cloud orchestration and software in the larger world (from Kubernetes to Docker). Go comes with all the tools we need to make huge strides in the reliability of our tooling and ability to scale.

svg viewer

Because many of these cloud services are written in Go, their parts are available to us by accessing their packages for your own tooling needs. This can make writing tooling for the cloud an easier experience.

Prerequisites#

This course is for anyone who would like to use Go to develop their own DevOps tooling or to integrate custom features with DevOps tools such as Kubernetes, GitHub Actions, HashiCorp Packer, and Terraform.

The primary audience for this course is those with some programming experience but not necessarily with Go. A basic understanding of command-line tools for any supported operating systems will be
required. It may also be helpful to have some DevOps experience.

Course structure#

This course will be split into 15 sections, all of which are divided into 3 subsections. The course structure is depicted below:

Designing for Chaos
Programming the Cloud
Deploying and Building Applications in Kubernetes
Infrastructure as Code with Terraform
Creating Immutable Infrastructure Using Packer
Using ChatOps to Increase Efficiency
Automating Workflows with GitHub Actions
Observability with OpenTelemetry
Automating Command-Line Tasks
Writing Command-Line Tooling
Interacting with Remote Data Sources
Using Common Data Formats
Filesystem Interactions
Go Language Essentials
Go Language Basics
Cloud ready Go
Instrumenting, Observing, and Responding
Getting Up and Running with Go
Go For DevOps
Course structure

Introduction